package com.tensquare.friend.controller;

import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.service.FriendService;
import entity.Result;
import entity.StatusCode;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/friend")
public class FriendController {

    @Autowired
    private HttpServletRequest request;

    @Autowired
    private FriendService friendService;

    @Autowired
    private UserClient userClient;




    /**
     * 添加好友 或 添加非好友
     * @return
     */
    @RequestMapping(value = "/like/{friendid}/{type}",method = RequestMethod.PUT)
    public Result addFriend(@PathVariable String friendid,@PathVariable String type){
        //验证是否登录。并且拿到当前用户的id
       Claims claims = (Claims) request.getAttribute("claims_user");
        System.out.println("ccccc"+claims.getId());
       if(claims==null){
           //说明当前用户没有user 角色
           return new Result(false,StatusCode.ERROR,"权限不足");
       }

       //获取当前用户id
        String userid = claims.getId();

        //判断是好友 还是 非好友
        if(type!=null){
            if(type.equals("1")){
                //添加好友
               int flag= friendService.addFriend(userid,friendid);
               if(flag == 0){
                   return new Result(false,StatusCode.ERROR,"不能重复添加好友");
               }
               if(flag == 1){
                    //添加好友的粉丝数 用户的关注数
                   userClient.updatefanscountandfollowcount(userid,friendid,1);

                   return new Result(true,StatusCode.OK,"添加成功");
               }
            }else if (type.equals("2")){
                //添加非好友
                int flag = friendService.addNoFriend(userid,friendid);
                if(flag == 0){
                    return new Result(false,StatusCode.ERROR,"不能重复添加非好友");
                }
                if(flag == 1){
                    return new Result(true,StatusCode.OK,"添加成功");
                }

            }
            return new Result(false,StatusCode.ERROR,"参数异常");

        }

        return new Result(true, StatusCode.OK,"添加成功");
    }

    /**
     * 删除好友
     */

    @RequestMapping(value = "/{friendid}",method = RequestMethod.DELETE)
    public Result deleteFriend(@PathVariable String friendid){
        //验证是否登录。并且拿到当前用户的id
        Claims claims = (Claims) request.getAttribute("claims_user");
        System.out.println("ccccc"+claims.getId());
        if(claims==null){
            //说明当前用户没有user 角色
            return new Result(false,StatusCode.ERROR,"权限不足");
        }
        //获取当前用户id
        String userid = claims.getId();
        friendService.deleteFriend(userid,friendid);
        //粉丝数 -1  关注数 -1
        userClient.updatefanscountandfollowcount(userid,friendid,-1);

        return new Result(true,StatusCode.OK,"删除成功");
    }

}
